package com.deng.api.controller;

import com.deng.api.service.AuthUserService;
import com.deng.api.vo.UserVO;
import com.deng.commons.common.BaseResult;
import com.deng.commons.common.CodeType;
import com.deng.commons.common.ErrorCode;
import com.deng.commons.utils.CodeUtils;
import com.wf.captcha.base.Captcha;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.awt.*;
import java.io.IOException;
import java.util.concurrent.TimeUnit;

/**
 * @Author by DHF
 * @Date 2022/08/2022/8/10 16:14
 * @Version 1.0
 */
@RestController
@Api(tags="权限管理用户信息")
@RequestMapping("/auth")
@Slf4j
public class AuthController {
    @Autowired
    private AuthUserService authUserService;

    @ApiOperation("获取验证码")
    @GetMapping("/code")
    public BaseResult captcha() throws IOException, FontFormatException {
        return authUserService.captcha();
    }

    /**
     * 授权登录接口(entity，dto，vo)
     *      （1） 验证code是否正确
     *      （2） 通过账号查找用户，如果查找不到怎返回错误，查找到就match密码
     *      （3）如果密码正确，产生登录凭证并存储SecurityContext中，
     *      （4）记录上次登录时间
     *      （5）使用jwt生成token，并跟用户一起返回给前端
     *      注意：（1）json数据接口接收需要添加@RequestBody
     *           （2） 密码比对，match方法密码的顺序要写对
     */
    @PostMapping("/login")
    @ApiOperation("登录接口")
    public BaseResult doLogin(@RequestBody UserVO userVO, HttpServletRequest request){
        return authUserService.doLogin(userVO,request);
    }

    @GetMapping("/info")
    @ApiOperation("用户信息获取")
    public BaseResult info(){
        return authUserService.info();
    }
}
